View Javadoc
1 /************************************************************ 2 * Copyright * 3 * Portions of this software are Copyright (c) 1993 - 2002, * 4 * Chad Z. Hower (Kudzu) and the Indy Pit Crew * 5 * - http://www.nevrona.com/Indy/ * 6 ************************************************************/ 7 package org.indy; 8 9 import org.indy.util.StringList; 10 11 12 /*** 13 * Description of the Class 14 * 15 *@author owen 16 */ 17 public class RFCReply { 18 private int numericCode; 19 private StringList text = new StringList(); 20 private String textCode; 21 22 /*** 23 * Constructor for the IdRFCReply object 24 */ 25 public RFCReply() { 26 } 27 28 /*** 29 * Constructor for the IdRFCReply object 30 * 31 *@param reply Description of the Parameter 32 */ 33 public RFCReply(RFCReply reply) { 34 } 35 36 /*** 37 * Sets the numericCode attribute of the IdRFCReply object 38 * 39 *@param code The new numericCode value 40 */ 41 public final void setNumericCode(int code) { 42 numericCode = code; 43 44 if (code > 0) { 45 textCode = String.valueOf(code); 46 } 47 } 48 49 /*** 50 * Sets the textCode attribute of the IdRFCReply object 51 * 52 *@param s The new textCode value 53 */ 54 public final void setTextCode(String s) { 55 textCode = s; 56 57 if (s.length() > 0) { 58 try { 59 numericCode = Integer.parseInt(s); 60 } 61 catch (NumberFormatException nfe) { 62 numericCode = 0; 63 } 64 } 65 } 66 67 /*** 68 * Sets the reply attribute of the IdRFCReply object 69 * 70 *@param numericCode The new reply value 71 *@param data The new reply value 72 */ 73 public final void setReply(int numericCode, String data) { 74 this.numericCode = numericCode; 75 this.text.setText(data); 76 } 77 78 /*** 79 * Sets the text attribute of the IdRFCReply object 80 * 81 *@param text The new text value 82 */ 83 public final void setText(StringList text) { 84 /*** 85 *@todo Should use a copy constructor for security? 86 */ 87 this.text.copy(text); 88 } 89 90 /*** 91 * Gets the numericCode attribute of the IdRFCReply object 92 * 93 *@return The numericCode value 94 */ 95 public final int getNumericCode() { 96 return numericCode; 97 } 98 99 /*** 100 * Gets the text attribute of the IdRFCReply object 101 * 102 *@return The text value 103 */ 104 public final StringList getText() { 105 return text; 106 } 107 108 /*** 109 * Gets the textCode attribute of the IdRFCReply object 110 * 111 *@return The textCode value 112 */ 113 public final String getTextCode() { 114 return textCode; 115 } 116 117 /*** 118 * Description of the Method 119 */ 120 public final void clear() { 121 textCode = null; 122 numericCode = 0; 123 text.clear(); 124 } 125 126 /*** 127 * Description of the Method 128 * 129 *@return Description of the Return Value 130 */ 131 public final String generateReply() { 132 StringBuffer sb = new StringBuffer(); 133 134 if (numericCode > 0) { 135 if (text.size() > 0) { 136 for (int i = 0, n = text.size(); i < n; i++) { 137 sb.append(numericCode); 138 139 if (i < (n - 1)) { 140 sb.append('-'); 141 } 142 else { 143 sb.append(' '); 144 } 145 146 sb.append(text.get(i)); 147 sb.append("\r\n"); 148 } 149 } 150 else { 151 sb.append(numericCode); 152 sb.append("\r\n"); 153 } 154 } 155 else if (text.size() > 0) { 156 return text.getText(); 157 } 158 159 return sb.toString(); 160 } 161 162 /*** 163 * Description of the Method 164 * 165 *@param strings Description of the Parameter 166 */ 167 public final void parseResponse(StringList strings) { 168 clear(); 169 170 String textCodeTmp; 171 172 if (strings.size() > 0) { 173 //get 4 chars for POP3 174 textCodeTmp = strings.get(0).substring(0, 3).trim(); 175 176 if (textCodeTmp.length() == 4) { 177 if (textCodeTmp.endsWith("-")) { 178 textCodeTmp = textCodeTmp.substring(0, 2); 179 } 180 } 181 182 setTextCode(textCodeTmp); 183 text.addStrings(strings); 184 } 185 } 186 187 //Needed for IMAP4 188 189 /*** 190 * Description of the Method 191 * 192 *@param tag Description of the Parameter 193 *@param strings Description of the Parameter 194 */ 195 public void parseLineResponse(String tag, StringList strings) { 196 clear(); 197 198 if (strings.size() > 0) { 199 if (strings.get(strings.size() - 1).charAt(0) == '*') { 200 //untagged response 201 textCode = "OK"; 202 } 203 else { 204 textCode = strings.get(strings.size() - 1) 205 .substring(tag.length() + 1, tag.length() + 4).trim(); 206 } 207 208 for (int i = 0, n = strings.size(); i < n; i++) { 209 if (tag.equalsIgnoreCase(strings.get(i).substring(0, tag.length()) 210 .trim())) { 211 text.add(strings.get(i).substring(tag.length() + 4)); 212 } 213 else { 214 text.add(strings.get(i).substring(2)); 215 } 216 } 217 } 218 } 219 220 //Needed for IMAP4 221 222 /*** 223 * Description of the Method 224 * 225 *@param tag Description of the Parameter 226 *@param strings Description of the Parameter 227 */ 228 public void parseResponse(String tag, StringList strings) { 229 clear(); 230 231 if (strings.size() > 0) { 232 if (strings.get(strings.size() - 1).trim() 233 .equalsIgnoreCase("+ Ready for argument")) { 234 /* 235 * do not localize 236 */ 237 textCode = "OK"; 238 } 239 else { 240 textCode = strings.get(strings.size() - 1) 241 .substring(tag.length() + 2, tag.length() + 5).trim(); 242 } 243 244 for (int i = 0, n = strings.size(); i < n; i++) { 245 if (tag.equalsIgnoreCase(strings.get(i).substring(0, tag.length()) 246 .trim())) { 247 text.add(strings.get(i).substring(tag.length() + 4)); 248 } 249 else { 250 text.add(strings.get(i).substring(2)); 251 } 252 } 253 } 254 } 255 256 /*** 257 * Description of the Method 258 * 259 *@return Description of the Return Value 260 */ 261 public final boolean replyExists() { 262 return (numericCode > 0) || (text.size() > 0); 263 } 264 265 /*** 266 * DOCUMENT ME! 267 * 268 * @return DOCUMENT ME! 269 */ 270 public String toString() { 271 return generateReply(); 272 } 273 }

This page was automatically generated by Maven